---
title: 理论篇
---
在并发编程领域，有两大核心问题：一个是互斥，即同一时刻只允许一个线程访问共享资源；另一个是同步，即线程之间如何通信、协作。这两大问题，管程都是能够解决的。

Java SDK 并发包通过 Lock 和 Condition 两个接口来实现管程，其中 Lock 用于解决互斥问题，其中 Lock 用于解决互斥问题，Condition 用于解决同步问题。


CountDownLatch 和 CyclicBarrier 是Java并发包提供的两个非常易用的线程同步工具类。CountDownLatch 主要用来解决一个线程等待多个线程的场景；CyclicBarrier 则是一组线程之间互相等待。

CountDownLatch 计数器是不能循环利用的，但 CyclicBarrier 的计数器是可以循环利用的。而且具备自动重复的功能，并且 CyclicBarrier 还可以设置回调函数。

除此之外，也可以利用 Future 实现线程之间的等待。

import DocCardList from '@theme/DocCardList';


<DocCardList/>


